part of base.utils;

class LogUtil {
  static const String _defTag = 'LogUtil';
  static bool _debugMode = false; //是否是debug模式,true: log v 不输出.
  static int _maxLen = 128;
  static String _tagValue = _defTag;

  LogUtil.init({
    String tag = _defTag,
    bool isDebug = false,
    int maxLen = 128,
  }) {
    _tagValue = tag;
    _debugMode = isDebug;
    _maxLen = maxLen;
  }
}

extension Log on String {
  void d(Object? object, {String? tag}) {
    if (LogUtil._debugMode) {
      log('$tag d | ${object?.toString()}');
    }
  }

  void e(Object? object, {String? tag}) {
    _printLog(tag, ' e ', object);
  }

  void v(Object? object, {String? tag}) {
    if (LogUtil._debugMode) {
      _printLog(tag, ' v ', object);
    }
  }

  void _printLog(String? tag, String stag, Object? object) {
    String da = object?.toString() ?? 'null';
    tag = tag ?? LogUtil._tagValue;
    if (da.length <= LogUtil._maxLen) {
      print('$tag$stag $da');
      return;
    }
    print(
        '$tag$stag — — — — — — — — — — — — — — — — st — — — — — — — — — — — — — — — —');
    while (da.isNotEmpty) {
      if (da.length > LogUtil._maxLen) {
        print('$tag$stag| ${da.substring(0, LogUtil._maxLen)}');
        da = da.substring(LogUtil._maxLen, da.length);
      } else {
        print('$tag$stag| $da');
        da = '';
      }
    }
    print(
        '$tag$stag — — — — — — — — — — — — — — — — ed — — — — — — — — — — — — — — — —');
  }
}
